<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Estadisticas extends MY_Controller {

  /**
	 * Evita la validacion (enfocado cuando se usa ajax). Ver mas en privilegios_model
	 * @var unknown_type
	 */
	
	public function _remap($method){
		$this->carabiner->css(array(
				array('bootstrap/bootstrap-simplex.css', 'screen'),
				array('bootstrap/bootstrap-responsive.css', 'screen'),
				array('bootstrap/charisma-app.css', 'screen'),
				array('bootstrap/jquery-ui-1.8.21.custom.css', 'screen'),
				array('bootstrap/fullcalendar.css', 'screen'),
				array('bootstrap/fullcalendar.print.css', 'print'),
				array('bootstrap/chosen.css', 'screen'),
				array('bootstrap/uniform.default.css', 'screen'),
				array('bootstrap/colorbox.css', 'screen'),
				array('bootstrap/jquery.cleditor.css', 'screen'),
				array('bootstrap/jquery.noty.css', 'screen'),
				array('bootstrap/noty_theme_default.css', 'screen'),
				array('bootstrap/elfinder.min.css', 'screen'),
				array('bootstrap/elfinder.theme.css', 'screen'),
				array('bootstrap/jquery.iphone.toggle.css', 'screen'),
				array('bootstrap/opa-icons.css', 'screen'),
				array('bootstrap/uploadify.css', 'screen'),

				array('base-panel.css', 'screen')
		));
		$this->carabiner->js(array(
				array('bootstrap/jquery-1.7.2.min.js'),
				array('bootstrap/jquery-ui-1.8.21.custom.min.js'),
				array('bootstrap/bootstrap-transition.js'),
				array('bootstrap/bootstrap-alert.js'),
				array('bootstrap/bootstrap-modal.js'),
				array('bootstrap/bootstrap-dropdown.js'),
				array('bootstrap/bootstrap-scrollspy.js'),
				array('bootstrap/bootstrap-tab.js'),
				array('bootstrap/bootstrap-tooltip.js'),
				array('bootstrap/bootstrap-popover.js'),
				array('bootstrap/bootstrap-button.js'),
				array('bootstrap/bootstrap-collapse.js'),
				array('bootstrap/bootstrap-carousel.js'),
				array('bootstrap/bootstrap-typeahead.js'),
				array('bootstrap/bootstrap-tour.js'),
				array('bootstrap/jquery.cookie.js'),
				array('bootstrap/fullcalendar.min.js'),
				array('bootstrap/jquery.dataTables.min.js'),
				/** chart libraries **/
				array('bootstrap/excanvas.js'),
				array('bootstrap/jquery.flot.min.js'),
				array('bootstrap/jquery.flot.pie.min.js'),
				array('bootstrap/jquery.flot.stack.js'),
				array('bootstrap/jquery.flot.resize.min.js'),

				array('bootstrap/jquery.chosen.min.js'),
				array('bootstrap/jquery.uniform.min.js'),
				array('bootstrap/jquery.colorbox.min.js'),
				array('bootstrap/jquery.cleditor.min.js'),
				array('bootstrap/jquery.noty.js'),
				array('bootstrap/jquery.elfinder.min.js'),
				array('bootstrap/jquery.raty.min.js'),
				array('bootstrap/jquery.iphone.toggle.js'),
				array('bootstrap/jquery.autogrow-textarea.js'),
				array('bootstrap/jquery.uploadify-3.1.min.js'),
				array('bootstrap/jquery.history.js'),
				array('bootstrap/charisma.js'),
		));
		
		$this->load->model("empleados_model");
		if($this->empleados_model->checkSession()){
			// $this->empleados_model->excepcion_privilegio = $this->excepcion_privilegio;
			// $this->info_empleado = $this->empleados_model->getInfoEmpleado($_SESSION['id_empleado'], true);
			$this->{$method}();
		}else
			redirect(base_url('panel/home/'));
	}
	
	public function index()
	{
		$this->carabiner->js(array(
			array('general/msgbox.js'),
			array('estadisticas/graficas.js')
		));
		
		$params['seo'] = array(
			'titulo' => 'Administración de artículos'
		);
		
		$this->load->model('ventas_model');
		$params['ventas'] = $this->ventas_model->get_ventas();

		$params['visitas'] = $this->get_visitas_ajax(true);

		$params['ingresos'] = $this->get_ingresos_ajax(true);
		
		if (isset($_GET['msg'])) 
			$params['frm_errors'] = $this->showMsgs($_GET['msg']);
		
		$this->load->view('panel/header', $params);
		$this->load->view('panel/general/menu', $params);
		$this->load->view('panel/estadisticas/admin', $params);
		$this->load->view('panel/footer');
	}


	/**
	* *****************************************************
	* Visitas de usuarios a articulos
	* *****************************************************
	*/
	public function get_visitas_ajax($return=false){
		$params['visitas_todas']  = $this->get_visitas_todas_ajax($return);
		$params['visitas_tic']    = $this->get_visitas_tic_ajax($return);
		$params['visitas_gratis'] = $this->get_visitas_gratis_ajax($return);

		if ($return)
			return $params;
		else{
			/*$params['visitas_todas']  = $params['visitas_todas'];
			$params['visitas_tic']    = $params['visitas_tic'];
			$params['visitas_gratis'] = $params['visitas_gratis'];*/
			echo json_encode($params);
		}
	}
	/**
	* Obtiene todas las visitas
	*/
	public function get_visitas_todas_ajax($return=false){
		$fecha1 = $this->input->get('fecha1')==''? date("Y-m").'-01': $this->input->get('fecha1');
		$fecha2 = $this->input->get('fecha2')==''? date("Y-m-d"): $this->input->get('fecha2');
		$sql    = '';

		$ndias = String::diasEntreFechas($fecha1, $fecha2);
		for($i=0; $i<=$ndias; ++$i){
			$sql .= ", getVisitasDia('".String::suma_fechas($fecha1, $i)."', ".$i.") AS `d".$i."`";
		}

		return $this->parse_result_visitas($sql, $return, $ndias);
	}
	/**
	* Obtiene las visitas con acceso tic
	*/
	public function get_visitas_tic_ajax($return=false){
		$fecha1 = $this->input->get('fecha1')==''? date("Y-m").'-01': $this->input->get('fecha1');
		$fecha2 = $this->input->get('fecha2')==''? date("Y-m-d"): $this->input->get('fecha2');
		$sql    = '';

		$ndias = String::diasEntreFechas($fecha1, $fecha2);
		for($i=0; $i<=$ndias; ++$i){
			$sql .= ", getVisitasDiaTic('".String::suma_fechas($fecha1, $i)."', ".$i.") AS `d".$i."`";
		}

		return $this->parse_result_visitas($sql, $return, $ndias);
	}
	/**
	* Obtiene las visitas con acceso gratuitas
	*/
	public function get_visitas_gratis_ajax($return=false){
		$fecha1 = $this->input->get('fecha1')==''? date("Y-m").'-01': $this->input->get('fecha1');
		$fecha2 = $this->input->get('fecha2')==''? date("Y-m-d"): $this->input->get('fecha2');
		$sql    = '';

		$ndias = String::diasEntreFechas($fecha1, $fecha2);
		for($i=0; $i<=$ndias; ++$i){
			$sql .= ", getVisitasDiaGratis('".String::suma_fechas($fecha1, $i)."', ".$i.") AS `d".$i."`";
		}

		return $this->parse_result_visitas($sql, $return, $ndias);
	}

	/**
	* *****************************************************
	* Ingresos de compas de paquetes
	* *****************************************************
	*/
	public function get_ingresos_ajax($return=false){
		$params['ingresos_todos']     = $this->get_ingresos_todos_ajax($return);
		$params['ingresos_ilimitado'] = $this->get_ingresos_ilimitado_ajax($return);
		$params['ingresos_tipos']     = $this->get_ingresos_tipos_ajax($return);

		if ($return)
			return $params;
		else{
			/*$params['ingresos_todos']  = $params['ingresos_todos'];
			$params['ingresos_ilimitado']    = $params['ingresos_ilimitado'];
			//$params['visitas_gratis'] = $params['visitas_gratis'];*/
			echo json_encode($params);
		}
	}
	/**
	* Obtiene todas las visitas
	*/
	public function get_ingresos_todos_ajax($return=false){
		$fecha1 = $this->input->get('fecha1')==''? date("Y-m").'-01': $this->input->get('fecha1');
		$fecha2 = $this->input->get('fecha2')==''? date("Y-m-d"): $this->input->get('fecha2');
		$sql    = '';

		$ndias = String::diasEntreFechas($fecha1, $fecha2);
		for($i=0; $i<=$ndias; ++$i){
			$sql .= ", getIngresosDia('".String::suma_fechas($fecha1, $i)."', ".$i.") AS `d".$i."`";
		}

		return $this->parse_result_visitas($sql, $return, $ndias);
	}
	/**
	* Obtiene las visitas con acceso tic
	*/
	public function get_ingresos_ilimitado_ajax($return=false){
		$fecha1 = $this->input->get('fecha1')==''? date("Y-m").'-01': $this->input->get('fecha1');
		$fecha2 = $this->input->get('fecha2')==''? date("Y-m-d"): $this->input->get('fecha2');
		$sql    = '';

		$ndias = String::diasEntreFechas($fecha1, $fecha2);
		for($i=0; $i<=$ndias; ++$i){
			$sql .= ", getIngresosDiaIlim('".String::suma_fechas($fecha1, $i)."', ".$i.") AS `d".$i."`";
		}

		return $this->parse_result_visitas($sql, $return, $ndias);
	}
	/**
	* Obtiene las visitas con acceso gratuitas
	*/
	public function get_ingresos_tipos_ajax($return=false){
		$fecha1 = $this->input->get('fecha1')==''? date("Y-m").'-01': $this->input->get('fecha1');
		$fecha2 = $this->input->get('fecha2')==''? date("Y-m-d"): $this->input->get('fecha2');
		$sql    = '';
		$result = '';
		$res_result = array();

		$ndias = String::diasEntreFechas($fecha1, $fecha2);

		$res_tipos = $this->db->query("SELECT id_tipo, nombre FROM articulos_tipo");
		foreach ($res_tipos->result() as $value) {
			for($i=0; $i<=$ndias; ++$i){
				$sql .= ", getIngresosDiaTipos('".String::suma_fechas($fecha1, $i)."', ".$value->id_tipo.") AS `d".$i."`";
			}
			$res = $this->db->query("SELECT ".substr($sql, 1));
			$data = $res->row();
			
			$result = array();
			for($i=0; $i<=$ndias; ++$i){
				$data_pre = $this->db->query("SELECT precio FROM precios WHERE tipo = 'artic-".$value->id_tipo."'")->row();
				$result[] = array($i, ($data->{'d'.$i} * $data_pre->precio), '"'.String::suma_fechas($fecha1, $i).'"'); //'['.$i.', '.($data->{'d'.$i} * $data_pre->precio).', "'.String::suma_fechas($fecha1, $i).'"], ';
			}

			$res_result[$value->nombre] = $result;

			$sql = '';
		}

		if($return)
			return json_encode($res_result);
		else
			return $res_result;
	}

	/**
	* Parsea el resultado y lo regresa en json o array
	*/
	private function parse_result_visitas($sql, $return, $ndias){
		$res = $this->db->query("SELECT ".substr($sql, 1));
		$data = $res->row();

		if ($return){
			$sql = '[';
			for($i=0; $i<=$ndias; ++$i){
				$sql .= $data->{'d'.$i}.',';
			}
			$sql .= ']';
			return $sql;
		}else{
			$array = array();
			for($i=0; $i<=$ndias; ++$i){
				$sql = explode(', ', str_replace(array('[', ']'), array('', ''), $data->{'d'.$i}));
				$array[] = $sql;
			}
			return $array;
		}
	}

	
	
	
	/**
	 * Muestra mensajes cuando se realiza alguna accion
	 * @param unknown_type $tipo
	 * @param unknown_type $msg
	 * @param unknown_type $title
	 */
	private function showMsgs($tipo, $msg='', $title='Articulos')
	{
		switch($tipo){
			case 1:
				$txt = 'El campo ID es requerido.';
				$icono = 'error';
				break;
			case 2: //Cuendo se valida con form_validation
				$txt = $msg;
				$icono = 'error';
				break;
			case 3:
				$txt = 'El artículo se agregó correctamente.';
				$icono = 'success';
				break;
			case 4:
				$txt = 'El artículo se modificó correctamente.';
				$icono = 'success';
				break;
			case 5:
				$txt = 'El artículo se eliminó correctamente.';
				$icono = 'success';
				break;
			case 6:
				$txt = 'El artículo se activó correctamente.';
				$icono = 'success';
				break;
		}
	
		return array(
				'title' => $title,
				'msg' => $txt,
				'ico' => $icono);
	}
	
}

/* End of file articulos.php */
/* Location: ./application/controllers/panel/articulos.php */
